package com.ruoyi.common.utils;

import cn.hutool.core.util.RandomUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Vector;

/**
 * @description: 生成随机数工具类
 * @author: duanyashu
 * @time: 2021-06-05 10:20
 */
public class RandomUtils extends RandomUtil {
    /**
     * 根据min和max随机生成一个范围在[min,max]的随机数，包括min和max
     *
     * @param min
     * @param max
     * @return int
     */

    public static int getRandom(int min, int max) {
        Random random = new Random();

        return random.nextInt(max - min + 1) + min;

    }

    /**
     * 根据min和max随机生成count个不重复的随机数组
     *
     * @param min
     * @param max
     * @param count
     * @return int[]
     */

    public static int[] getRandoms(int min, int max, int count) {
        int[] randoms = new int[count];

        List listRandom = new ArrayList();

        if (count > (max - min + 1)) {
            return null;

        }

// 将所有的可能出现的数字放进候选list

        for (int i = min; i <= max; i++) {
            listRandom.add(i);

        }

// 从候选list中取出放入数组，已经被选中的就从这个list中移除

        for (int i = 0; i < count; i++) {
            int index = getRandom(0, listRandom.size() - 1);

            randoms[i] = (int) listRandom.get(index);

            listRandom.remove(index);

        }

        return randoms;

    }


    /**
     * 获取10个1-20之间的随机数，要求不能重复
     *
     * @author lgt
     */

    public static void main(String[] args) {
//创建一个产生随机数的对象

        Random r = new Random();

//创建一个存储随机数的集合

        Vector v = new Vector();

//定义一个统计变量

        int count = 0;

        while (count < 10) {
            int number = r.nextInt(20) + 1;

//判断number是否在集合中存在

            if (!v.contains(number)) {
//不在集合中，就添加

                v.add(number);

                count++;

            }

        }

//遍历输出

        for (Object i : v) {
            System.out.println(i);

        }

    }

}
